home *** CD-ROM | disk | FTP | other *** search
/ MaxiMac 2000 December / MaxiMac 109.iso / Macworld on CD n°109 / Applications (Mac OS X PB) / MacOSX ScreenSavers / Source Code / Pipes / GLPipes.m < prev    next >
Encoding:
Text File  |  2000-10-02  |  2.3 KB  |  109 lines  |  [????/????]

  1. #import "GLPipes.h"
  2.  
  3. #import "pipes.c"
  4.  
  5. // defined by FreeSpace
  6. float randBetween(float a, float b);
  7.  
  8. int NRAND_PIPES (int foo) {
  9.  
  10.     NSNumber *intValue = [NSNumber numberWithInt:(foo - 1)];
  11.  
  12.     float randValue = SSRandomFloatBetween(1.0, [intValue floatValue]);
  13.     return [[NSNumber numberWithFloat:randValue] intValue];
  14. }
  15.  
  16. @implementation GLPipes    
  17.  
  18. - (id)initWithFrame:(NSRect)frameRect
  19. {
  20.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  21.  
  22.     self = [super initWithFrame:frameRect];
  23.     if (self) {
  24.         _view = [[NSOpenGLView alloc] initWithFrame:frameRect];
  25.         [self addSubview:_view];
  26.     }
  27.     
  28.     [NSBundle loadNibNamed:@"GLPipes.nib" owner:self];
  29.     factory = [defaults integerForKey:@"GLPipesDefine"];
  30.     fisheye = [defaults integerForKey:@"GLPipesCloseUp"];
  31.     tightturns = [defaults integerForKey:@"GLPipesTurns"];
  32.     rotatepipes = [defaults integerForKey:@"GLPipesRotate"];
  33.  
  34.  
  35.     [defineLevel setIntValue:factory];
  36.     [closeUp setState:fisheye];
  37.     [tightTurns setState:tightturns];
  38.     [rotatePipes setState:rotatepipes];
  39.  
  40.  
  41.     return self;
  42. }
  43.  
  44. - (NSTimeInterval)animationTimeInterval
  45. {
  46.     return 0.01;
  47. }
  48.  
  49. - (void)setFrameSize:(NSSize)newSize
  50. {
  51.     [super setFrameSize:newSize];
  52.     [_view setFrameSize:newSize];
  53.     _initedGL = NO;
  54.  
  55. }
  56.  
  57. - (void)drawRect:(NSRect)rects
  58. {
  59.     
  60.     [_view lockFocus];
  61.     
  62.     if (!_initedGL) {
  63.         init_pipes();
  64.         reshape_pipes((int)rects.size.width, (int)rects.size.height);
  65.  
  66.         _initedGL = YES;
  67.     }
  68.  
  69.     [_view unlockFocus];
  70. }
  71.  
  72.  
  73. - (void)oneStep
  74. {
  75.     if ([_view canDraw]) {
  76.         [_view lockFocus];
  77.         draw_pipes();
  78.         [_view unlockFocus];
  79.     }
  80.  
  81.     
  82.     return;
  83. }
  84.  
  85.  
  86. - (BOOL)hasConfigureSheet { return YES; }
  87. - (NSWindow*)configureSheet { return window; }
  88.  
  89. - (void)closeSheet:(id)sender
  90. {
  91.     [NSApp endSheet:window];
  92. }
  93.  
  94. - (void)updateSelections:sender
  95. {
  96.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  97.        
  98.     factory = [defineLevel intValue];
  99.     fisheye = [closeUp state];
  100.     tightturns = [tightTurns state];
  101.     rotatepipes = [rotatePipes state];
  102.  
  103.     [defaults setInteger:factory forKey:@"GLPipesDefine"];
  104.     [defaults setInteger:fisheye forKey:@"GLPipesCloseUp"];
  105.     [defaults setInteger:tightturns forKey:@"GLPipesTurns"];
  106.     [defaults setInteger:rotatepipes forKey:@"GLPipesRotate"];
  107. }
  108.  
  109. @end